package main

/*
	- 中间件是gin服务器和回调函数的中间层，用于拦截请求和日志打印
    - 默认的gin的default实现使用了recover中间件和logger中间件，用new的话是一个新的
 */
import (
	"github.com/gin-gonic/gin"
	"io"
	"net/http"
	"os"
)

func main() {

	fLog,_:=os.Create("./gin_log_test.log")
	fErrorLog,_:=os.Create("./gin_log_error_test.log")
	gin.DefaultErrorWriter=io.MultiWriter(fErrorLog)
	gin.DefaultWriter=io.MultiWriter(fLog )


	r := gin.New()
	r.Use(gin.Logger())//默认控制台输出
	/**
	//如果不使用这个中间件，遇到panic错误，整个服务就会挂掉。启用后当前执行有问题，但不影响其他的错误执行（）
	错误会到指定的日志里
	 */
	r.Use(gin.Recovery())
	//http://127.0.0.1:8080/stu
	r.GET("/stu", func(context *gin.Context) {
		name := context.Query("name")
		panic("this is test panic\n")
		var age = context.DefaultQuery("age", "defaultAge")
		context.String(http.StatusOK, "%s,%s", name, age)
	})
	r.Run()
}
